package com.example.zhangwei.ui.photoselect;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

import com.example.zhangwei.R;
import com.example.zhangwei.util.BaseActivity;

public class PhotoSelectImageView extends BaseActivity {
	
	private ImageView mImageView;
	private Button btn;
	
	private final int PHOTO_REQUEST_TAKEPHOTO = 1;// 拍照
    private final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择
    private final int PHOTO_REQUEST_CUT = 3;// 结果
    
    // 创建一个以当前时间为名称的文件
    File tempFile = new File(Environment.getExternalStorageDirectory(),getPhotoFileName());
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.photo_select_layout);
		
		mImageView = (ImageView)findViewById(R.id.photo_select_image);
		btn = (Button)findViewById(R.id.photo_select_btn);
		mImageView.setOnClickListener(new onClickListener());
		btn.setOnClickListener(new onClickListener());

	}
	
	private class onClickListener implements OnClickListener 
	{
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			showDialog();
		}
	}
	
	//提示对话框方法
	private void showDialog() {
		new AlertDialog.Builder(this)
		.setTitle("头像设置")
		.setPositiveButton("拍照", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				dialog.dismiss();
				// 调用系统的拍照功能
				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
				// 指定调用相机拍照后照片的储存路径
				intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(tempFile));
				startActivityForResult(intent, PHOTO_REQUEST_TAKEPHOTO);
			}
		})
		.setNegativeButton("相册", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				dialog.dismiss();
				Intent intent = new Intent(Intent.ACTION_PICK, null);
				intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
				startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
			}
		}).show();
	}
	
	@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
 
        switch (requestCode) {
        case PHOTO_REQUEST_TAKEPHOTO:
            startPhotoZoom(Uri.fromFile(tempFile), 150);
            break;
 
        case PHOTO_REQUEST_GALLERY:
            if (data != null)
                startPhotoZoom(data.getData(), 150);
            break;
 
        case PHOTO_REQUEST_CUT:
            if (data != null)
                setPicToView(data);
            break;
        }
        super.onActivityResult(requestCode, resultCode, data);
 
    }
	
	private void startPhotoZoom(Uri uri, int size) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        // crop为true是设置在开启的intent中设置显示的view可以剪裁
        intent.putExtra("crop", "true");
 
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
 
        // outputX,outputY 是剪裁图片的宽高
        intent.putExtra("outputX", size);
        intent.putExtra("outputY", size);
        intent.putExtra("return-data", true);
 
        startActivityForResult(intent, PHOTO_REQUEST_CUT);
    }
 
    //将进行剪裁后的图片显示到UI界面上
    @SuppressWarnings("deprecation")
	private void setPicToView(Intent picdata) {
        Bundle bundle = picdata.getExtras();
        if (bundle != null) {
            Bitmap photo = bundle.getParcelable("data");
//            Drawable drawable = new BitmapDrawable(photo);
            mImageView.setImageBitmap(photo);
        }
    }
	
	// 使用系统当前日期加以调整作为照片的名称
    @SuppressLint("SimpleDateFormat")
	private String getPhotoFileName() {
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");
        return dateFormat.format(date) + ".jpg";
    }

}
